/**
 * https://github.com/annie/AnnieJS
 */
/*游戏全局数据*/
var gameGlobalData = {
    token: null,
    initGameData: null,//游戏初始化数据
    userInfoData: null,//游戏用户数据
    surplusGiftData: null,//游戏活动，当前的剩余礼物数列表
    chooesGiftData: null,//礼物选择列表
    resultType: null,//结果列表类型
    level: 0,
    userCatchedCowSum: 0,//用户套到的牛牛数
    mobileCowCount: 0,//每局手机牛出现的次数计算
    isGameOver: false,
    isThrowing: false,
    isCatching: false
};
gameGlobalData.initGameData={time:"20",sum:"9",gamesum:"10"};
// '3E37cauIrn2enofg68NZaqMvCIl1QM7Y'//oAWMIwEweiZPmlRmXTV_wMlNs8_UkgDv5Nqd
// gameGlobalData.token = getQueryString('token') == "" ? 'NX93tF8zFPKJdmpAq26nMPfJjMNbsKsq' : getQueryString('token');//微信授权后，返回的token,存储起来用于接口访问
// // trace(gameGlobalData.token);
AnnieRoot.addEventListener("load", function () {
    annie.debug = false;
    /**
     * 因为这是个文件是入口文件,加载时间越短越好,那么就需要这个文件里代码量越少越好，尽量在其他文件写项目逻辑
     * 装载引擎的Canvas的div的id,可以在一个页面同时放多个stage.
     * 设计尺寸的宽
     * 设计尺寸的高
     * FPS刷新率
     * 缩放模式
     * 渲染模式
     */
    var stage = new annie.Stage("annieEngine", 640, 1136, 30, annie.StageScaleMode.FIXED_WIDTH, 0);
    //默认关闭自动旋转和自动resize
    //stage.autoResize=true;
    //stage.autoSteering=true;
    stage.addEventListener(annie.Event.ON_INIT_STAGE, function (e) {
        //想要同时加载多个场景的话，Annie2x.loadScene的第一个参数可以传数组如 ["scene1","scene2",...]
        var loadSceneArr = [];//加载场景数组
        loadSceneArr = ["gameFW", 'gscene', 'ui', 'readyGo', 'gcow', 'gtip', 'gresult', 'gtipAlert'];
        annie.loadScene("loading", function (per) {
            //加载进度
            trace("加载进度:" + per + "%");
        }, function () {
            //加载完成 result 里包含了当前加载完成的是哪个场景序号，以及总加载场景数有多少，所以
            //需要同时加载多个模块时可以判断已经加载好的后直接出内容，其他偷偷在后台加载
            var loadingObj = new loading.Loading();
            stage.addChild(loadingObj);
            annie.loadScene(loadSceneArr, function (per) {
                //加载进度
                trace("加载进度:" + per + "%");
                // loadingObj.gotoAndStop(per);
                loadingObj.per_txt.text = per + "%";
            }, function (result) {
                //加载完成 result 里包含了当前加载完成的是哪个场景序号，以及总加载场景数有多少，所以
                //需要同时加载多个模块时可以判断已经加载好的后直接出内容，其他偷偷在后台加载
                if (result.sceneId == result.sceneTotal) {
                    stage.removeChild(loadingObj);
                    stage.addChild(new gameFW.GameFW());
                }

            });
        });
    })
});

showDivGameBtn(false);

/*显示隐藏游戏按钮*/
function showDivGameBtn(boo) {
    if (annie.osType != 'ios') {
        var playBtn = document.getElementById('game_btn');
        // console.log(playBtn);
        if (boo) {
            playBtn.style.display = 'block';
        } else {
            playBtn.style.display = 'none';
        }
    }
    window.showDivGameBtn = showDivGameBtn;
}

//获取参数
function getQueryString(key) {
    key = key.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
    var regex = new RegExp('[\\?&]' + key + '=([^&#]*)'),
        qs = regex.exec(location.href);
    return (qs == null ? '' : qs[1]);
}

/*判断是否是函数*/
function isFunction(fn) {
    return Object.prototype.toString.call(fn) === '[object Function]';
}


if (window.navigator.onLine == true) {
    trace("首次 -- 已连接");
} else {
    trace("首次 -- 未连接");
}
var EventUtil = {

    addHandler: function (element, type, handler) {

        if (element.addEventListener) {

            element.addEventListener(type, handler, false);

        } else if (element.attachEvent) {

            element.attachEvent("on" + type, handler);

        } else {

            element["on" + type] = handler;

        }

    }

};
/*检测网络连接*/
EventUtil.addHandler(window, "online", function () {
    //alert("Online");
    annie.globalDispatcher.dispatchEvent('onlineToDo');
});

/**
 * 平面中两点距离公式
 * @param x1
 * @param y1
 * @param x2
 * @param y2
 * @returns {number}
 */
var getDistance = function (x1, y1, x2, y2) {
    var x1 = x1;
    var y1 = y1;
    var x2 = x2;
    var y2 = y2;
    var xdiff = x2 - x1;
    var ydiff = y2 - y1;
    var dis = Math.pow((xdiff * xdiff + ydiff * ydiff), 0.5);
    return dis;
};


/*拓展封装annie全局场景加载器*/
var loadingObj = null;
(function () {
    /**
     * 拓展封装annie全局场景加载器
     * @param sceneName  场景命名空间名
     * @param sceneContainer  承载场景的容器
     * @param bringData      携带的数据
     * @param callback       加载完成回调函数
     */
    var loadSceneManager = function (sceneName, sceneContainer, bringData, callback) {
        var s = this;
        annie.loadScene(sceneName, function (per) {
            //加载进度
            trace("加载进度:" + per + "%");
            if (!loadingObj) {
                loadingObj = new loading.Loading();
            }
            sceneContainer.removeChildAt(0);
            sceneContainer.addChild(loadingObj);
            // loadingObj.gotoAndStop(per);
            loadingObj.per_txt.text = per + "%";
        }, function (result) {
            //加载完成 result 里包含了当前加载完成的是哪个场景序号，以及总加载场景数有多少，所以
            //需要同时加载多个模块时可以判断已经加载好的后直接出内容，其他偷偷在后台加载
            // trace('场景Id:' + result.sceneName);
            if (result.sceneId == result.sceneTotal) {
                sceneContainer.removeChild(loadingObj);
                var upperCaseSceneName,
                    _sceneName,
                    sceneConstructor;
                if (typeof sceneName == 'string') {
                    _sceneName = sceneName;
                } else {
                    // trace('资源总个数：'+result.sceneTotal);
                    _sceneName = sceneName[0];
                }
                upperCaseSceneName = _sceneName.replace(_sceneName.charAt(0), _sceneName.charAt(0).toUpperCase());//第一字母大写
                sceneConstructor = annie.Eval(_sceneName);//字符串转换成对象
                if (sceneContainer.children.length > 0) {
                    sceneContainer.removeChildAt(0);
                }
                //bringData,携带数据
                var instance = new sceneConstructor[upperCaseSceneName]();
                if (bringData) {
                    instance.bringData = bringData
                } else {
                    instance.bringData = null;
                }
                sceneContainer.addChild(instance);
                isFunction(callback) && callback();//执行回调函数
            }
        });
    };
    return annie.loadSceneManager = loadSceneManager;
})();
